Load balancing mechanisms for virtualized infrastructures, such as VMware vSphere® Distributed Resource Scheduler™, typically execute load balancing processes across a cluster of host computers or servers based on CPU and memory usage of virtual machines (VMs). When a load balancing mechanism detects an imbalance in the host cluster with respect to usage of these resources, the load, balancing mechanism tries to balance the host cluster by migrating or moving one or more VMs from highly loaded host computers to less loaded host: computers.
However, there are certain cases where a conventional load balancing mechanism may not be able to perform any migrations to improve the load balance in the cluster even though it may be possible to improve the load balance. An example would be a case where migrating a VM might improve the load balance in one metric (either CPU or memory) across the cluster, but that would worsen the load balance in the other metric, because load in the other metric is already well balanced across the cluster. This type of imbalance is called “single metric imbalance.” In this case, the load balancing mechanism may not move that VM since such a VM migration may result in a greater overall imbalance. Another example would be a case where the load balancing mechanism has determined that a VM should be moved from a source host computer to a destination host computer to improve the load balance for the cluster, but the destination host computer already has a maximum number of VMs already running on that host computer. In this case, the load balancing mechanism would not move the VM to the destination host since that would exceed the maximum number of VMs set for the destination host computer.